home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 2207 / 2207.xpi / chrome / cooliris.jar / content / cooliris / js / cpvw_pageProperties.js
Text File  |  2009-12-22  |  14KB  |  444 lines

  1. var cpvw_view = {
  2.     position : {
  3.         x : -1,
  4.         y : -1,
  5.         width : -1,
  6.         height : -1
  7.     },
  8.  
  9.     openDelayTime : cpvw_Delays.OPEN_DELAY_TIME,
  10.     prefetchDelay : cpvw_Delays.PREFETCH_DELAY_TIME,
  11.     dispDelayTime : cpvw_Delays.DISPLAY_DELAY_TIME,
  12.  
  13.     showPreview : function(noAnim, hiddenOverride)
  14.     {
  15.  
  16.     },
  17.  
  18.     hidePreview : function()
  19.     {
  20.  
  21.     }
  22.  
  23. }
  24.  
  25. var cpvw_controller = {
  26.  
  27. }
  28.  
  29. var cpvw_frameHandler = {
  30.     // called on main window load, i.e. once for window load
  31.     setup : function()
  32.     {
  33.         var frmPreview = cpvw_controller.getPreviewFrame();
  34.         frmPreview.addEventListener("DOMContentLoaded", cpvw_frameHandler, false);
  35.         frmPreview.addEventListener("CoolPreviewsCoolirisDontShow", cpvw_frameHandler, false, true);
  36.         frmPreview.addEventListener("CoolPreviewsCoolirisContinue", cpvw_frameHandler, false, true);
  37.         for (var i = 0; i < navigator.mimeTypes.length; i++)
  38.         {
  39.             if (navigator.mimeTypes[i].type.toLowerCase() == "application/pdf")
  40.                 this.hasAcrobat = true;
  41.         }
  42.     },
  43.  
  44.     handleEvent : function(evt)
  45.     {
  46.         if (evt.type == "DOMContentLoaded")
  47.         {
  48.             var frmPreview = this.getPreviewFrame();
  49.             if (frmPreview.contentDocument.URL == "chrome://cooliris/content/coolirisBlank.htm")
  50.                 return;
  51.  
  52.             var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  53.             var currentPref = pref.getIntPref("permissions.default.image");
  54.             if (currentPref != cpvw_previewHandler.beforePref)
  55.             {
  56.                 pref.setIntPref("permissions.default.image", cpvw_previewHandler.beforePref);
  57.                 this.showImages();
  58.             }
  59.             cpvw_previewHandler.pageLoad(evt);
  60.             if (cpvw_previewHandler.customSite == "youtube_video")
  61.             {
  62.                 if (frmPreview.contentDocument && frmPreview.contentDocument.getElementById("watch-this-vid"))
  63.                 {
  64.                     frmPreview.contentDocument.getElementById("watch-this-vid").scrollIntoView(true);
  65.                     frmPreview.contentWindow.scrollBy(5, 0);
  66.                 }
  67.             }
  68.             if (!cpvw_jsUtils.isFF2())
  69.             {
  70.                 frmPreview.contentDocument.addEventListener("mouseup", cpvw_subSearchBar, false);
  71.             }
  72.         }
  73.         else if (evt.type == "CoolPreviewsCoolirisDontShow")
  74.         {
  75.             var obj = cpvw_jsUtils.decodeJson(cpvw_prefHandler.getPref(cpvw_Prefs.jsonPrefCooliris));
  76.             obj.showCoolirisPage = false;
  77.             cpvw_prefHandler.setPrefJson(cpvw_Prefs.jsonPrefCooliris, obj);
  78.             if (cpvw_previewHandler.customSite == "google_images" || cpvw_previewHandler.customSite == "yahoo_images")
  79.             {
  80.                 cpvw_imageDocHandler.startPiclensLite();
  81.                 cpvw_previewHandler.hidePreview(true, "CoolirisLite");
  82.             }
  83.         }
  84.         else if (evt.type == "CoolPreviewsCoolirisContinue")
  85.         {
  86.             if (cpvw_previewHandler.customSite == "google_images" || cpvw_previewHandler.customSite == "yahoo_images")
  87.             {
  88.                 cpvw_imageDocHandler.startPiclensLite();
  89.                 cpvw_previewHandler.hidePreview(true, "CoolirisLite");
  90.             }
  91.         }
  92.     },
  93.  
  94.     showImages : function()
  95.     {
  96.         var frmPreview = cpvw_previewHandler.getPreviewFrame();
  97.         var arrDocs = [];
  98.         arrDocs.push(frmPreview.contentDocument);
  99.         arrDocs.concat(cpvw_getDocuments(frmPreview.contentWindow));
  100.  
  101.         setTimeout(function()
  102.                 {
  103.                     for (var k = 0; k < arrDocs.length; k++)
  104.                     {
  105.                         var ilist = arrDocs[k].images;
  106.                         for (var i = 0; i < ilist.length; i++)
  107.                         {
  108.                             ilist[i].setAttribute("src", ilist[i].src);
  109.                         }
  110.  
  111.                         var bodyNodes = arrDocs[k].getElementsByTagName("body");
  112.                         if (bodyNodes.length == 0)
  113.                             return;
  114.  
  115.                         var treeWalker = bodyNodes[0].ownerDocument.createTreeWalker(bodyNodes[0], NodeFilter.SHOW_ELEMENT, null, false);
  116.                         var domUtils = Components.classes["@mozilla.org/inspector/dom-utils;1"].getService(Components.interfaces.inIDOMUtils);
  117.                         var node;
  118.                         // While the tree walker has more nodes
  119.                         while ((node = treeWalker.nextNode()) != null)
  120.                         {
  121.                             var styleRules = domUtils.getCSSStyleRules(node);
  122.  
  123.                             // check if it is inline
  124.                             if (node.style.backgroundImage != null)
  125.                             {
  126.                                 node.style.backgroundImage = node.style.backgroundImage;
  127.                             }
  128.  
  129.                             // Loop through the element rules
  130.                             if (styleRules)
  131.                             {
  132.                                 for (var i = 0; i < styleRules.Count(); i++)
  133.                                 {
  134.                                     var elementRule = styleRules.GetElementAt(i).QueryInterface(Components.interfaces.nsIDOMCSSStyleRule);
  135.                                     var elementStyles = elementRule.style;
  136.                                     for (var j = 0; j < elementStyles.length; j++)
  137.                                     {
  138.                                         var styleRule = elementStyles[j];
  139.                                         // conDump("bg image url = " + ", " + node.localName + ", " + styleRule);
  140.                                         if (styleRule == "background-image" && elementStyles.getPropertyValue(styleRule) != "none")
  141.                                         {
  142.                                             // // conDump("*********************** = " + ", " + node.localName + ", " +
  143.                                             // styleRule + ", "
  144.                                             // + elementStyles.getPropertyValue(styleRule));
  145.                                             node.style.backgroundImage = elementStyles.getPropertyValue(styleRule);
  146.                                         }
  147.                                     }
  148.                                 }
  149.                             }
  150.                         }
  151.                     }
  152.                 }, 1);
  153.     },
  154.  
  155.     hideImages : function()
  156.     {
  157.         var frmPreview = cpvw_previewHandler.getPreviewFrame();
  158.         var ilist = frmPreview.contentDocument.images;
  159.         for (var i = 0; i < ilist.length; i++)
  160.         {
  161.             // conDump(ilist[i].src);
  162.             ilist[i].setAttribute("src", ilist[i].src);
  163.         }
  164.     }
  165. }
  166.  
  167. var cpvw_pageHandler = {
  168.  
  169.     arrLinks : [],
  170.     hasAcrobat : false,
  171.     currentLinkIndex : -1,
  172.  
  173.     handleEvent : function(evt)
  174.     {
  175.         if (evt.type == "DOMContentLoaded")
  176.         {
  177.             //cpvw_objOverlay.handleSearchPage();
  178.             // cpvw_previewHandler.hidePreview(false);
  179.             
  180.             this.setPreviewsStatus();    
  181.             
  182.             var parDoc = cpvw_objOverlay.getContentDocument(); 
  183.             var targetDoc = new XPCNativeWrapper(evt, "originalTarget").originalTarget;
  184.             var arrChildDocs = cpvw_getDocuments(cpvw_objOverlay.getContentWindow());
  185.             if (parDoc == targetDoc)
  186.             {
  187.                 for (var i = 0; i < arrChildDocs.length; i++)
  188.                 {
  189.                     cpvw_objOverlay.changeLinks(arrChildDocs[i]);
  190.                 }
  191.             }
  192.         }
  193.     },
  194.     
  195.     setPreviewsStatus : function()
  196.     {
  197.         var parDoc = cpvw_objOverlay.getContentDocument();
  198.         
  199.         var prefEnable = cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewEnable);
  200.         if (prefEnable == "no") 
  201.         {
  202.             cpvw_get("preview-status-image").src = "chrome://cooliris/skin/new/globaloff.png";
  203.             cpvw_get("preview-status").setAttribute("status", "globaloff");
  204.             parDoc.enablePreview = false;
  205.             return;
  206.         }
  207.         
  208.         if (parDoc.fromCache) 
  209.         {
  210.             if (parDoc.enablePreview) 
  211.             {
  212.                 cpvw_docHandler.parentDoc = parDoc;
  213.                 document.getElementById("preview-status-image").src = "chrome://cooliris/skin/new/previews-on.png";
  214.                 cpvw_get("preview-status").setAttribute("status", "previewsOnSite");
  215.                 return;
  216.             }
  217.         }
  218.         
  219.         var parDoc = cpvw_objOverlay.getContentDocument();
  220.         var result = cpvw_siteManager.isCustomSite(parDoc.location.href);
  221.         cpvw_docHandler.parentDoc.enablePreview = false;
  222.         // conDump("resulttt " + result[0]);
  223.         if (result[0]) 
  224.         {
  225.             parDoc.fromCache = true;
  226.             document.getElementById("preview-status-image").src = "chrome://cooliris/skin/new/previews-on.png";
  227.             cpvw_get("preview-status").setAttribute("status", "previewsOnSite");
  228.             if (parDoc.isChanged == null) 
  229.             {
  230.                 // frmPreview = cpvw_previewHandler.getPreviewFrame();                
  231.                 var customSite = result[1];
  232.                 cpvw_previewHandler.customSite = customSite;
  233.                 if (customSite == "google_images" || customSite == "yahoo_images") 
  234.                 {
  235.                     parDoc.isChanged = "yes";
  236.                     delete cpvw_imageDocHandler;
  237.                     
  238.                     cpvw_imageDocHandler = new cpvw_clsPreviewImages(parDoc, customSite);
  239.                     cpvw_imageDocHandler.setup();
  240.                     cpvw_imageDocHandler.parWindow = cpvw_objOverlay.getContentWindow();
  241.                     cpvw_imageDocHandler.parentDoc.enablePreview = true;
  242.                 }
  243.                 else 
  244.                 {
  245.                     parDoc.isChanged = "yes";
  246.                     
  247.                     cpvw_docHandler.customSite = customSite;
  248.                     cpvw_docHandler.parWindow = cpvw_objOverlay.getContentWindow();
  249.                     // cpvw_docHandler.convertLinks();
  250.                     cpvw_docHandler.parentDoc.enablePreview = true;
  251.                     
  252.                     cpvw_docHandler.parentDoc.arrHighlightText = "";
  253.                     
  254.                     if (customSite == "google_search") 
  255.                     {
  256.                         var cHref = parDoc.location.href;
  257.                         var searchWords = null;
  258.                         var arrTxt = cHref.match(/[&|?]q=(.*?)&/);
  259.                         if (arrTxt != null && arrTxt.length > 1) 
  260.                         {
  261.                             searchWords = arrTxt[1].split("+");
  262.                         }
  263.                         cpvw_docHandler.parentDoc.arrHighlightText = searchWords;
  264.                         // conDump("Search words = " + cpvw_docHandler.parentDoc.arrHighlightText);
  265.                         
  266.                         var isPrefetchSet = cpvw_docHandler.parentDoc.isPrefetchSet;
  267.                         if (isPrefetchSet == null || isPrefetchSet == false) 
  268.                         {
  269.                             var prefPrefetch = cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewPrefetch);
  270.                             if (prefPrefetch == "yes") 
  271.                             {
  272.                                 cpvw_docHandler.parentDoc.isPrefetchSet = true;
  273.                                 cpvw_docHandler.startPrefetch();
  274.                             }
  275.                         }
  276.                     }
  277.                     else if (customSite == "yahoo_search") 
  278.                     {
  279.                         var isPrefetchSet = cpvw_docHandler.parentDoc.isPrefetchSet;
  280.                         if (isPrefetchSet == null || isPrefetchSet == false) 
  281.                         {
  282.                             var prefPrefetch = cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewPrefetch);
  283.                             if (prefPrefetch == "yes") 
  284.                             {
  285.                                 cpvw_docHandler.parentDoc.isPrefetchSet = true;
  286.                                 cpvw_docHandler.startPrefetch();
  287.                             }
  288.                         }
  289.                     }
  290.                     if (customSite == "yahoo_search" && cpvw_jsUtils.isFF2()) 
  291.                     {
  292.                         // fix for the FF2 yahoo search problem
  293.                         setTimeout(function()
  294.                         {
  295.                             cpvw_docHandler.convertLinks();
  296.                         }, 1500);
  297.                     }
  298.                     else 
  299.                         cpvw_docHandler.convertLinks();
  300.                 }
  301.             }
  302.             else 
  303.                 cpvw_docHandler.parentDoc.enablePreview = true;
  304.         }
  305.         else 
  306.         {
  307.             cpvw_docHandler.parentDoc.enablePreview = false;
  308.             document.getElementById("preview-status-image").src = "chrome://cooliris/skin/new/previews-off.png";
  309.             cpvw_get("preview-status").setAttribute("status", "previewsOffSite");
  310.         }
  311.     },
  312.  
  313.     webPageInit : function(customSite)
  314.     {
  315.         this.customSite = customSite;
  316.     },
  317.  
  318.     convertLinks : function(hostDoc)
  319.     {
  320.         this.arrLinks = [];
  321.         var linkTags = hostDoc.getElementsByTagName("a");
  322.         var self = this;
  323.         hostDoc.addEventListener("DOMNodeInserted", function(evt)
  324.                 {
  325.                     var tNode = evt.target;
  326.                     var linkTags;
  327.                     if (tNode instanceof HTMLLinkElement)
  328.                     {
  329.                         self.modifyLinks([tNode]);
  330.                     }
  331.                     else
  332.                     {
  333.                         if (tNode.getElementsByTagName)
  334.                         {
  335.                             self.modifyLinks(tNode.getElementsByTagName("a"));
  336.                         }
  337.                     }
  338.                 }, false);
  339.  
  340.         this.modifyLinks(linkTags);
  341.     },
  342.  
  343.     filterLinks : function()
  344.     {
  345.  
  346.     },
  347.  
  348.     modifyLinks : function(linkTags)
  349.     {
  350.         var objPreview = this;
  351.         var adsArray = [];
  352.         var regArray = [];
  353.  
  354.         for (var i = 0; i < linkTags.length; i++)
  355.         {
  356.             var href = linkTags[i].href.toString();
  357.  
  358.             // filter any unwanted links
  359.             if (href.indexOf("http") == -1 || href.indexOf("#") == href.length - 1 || href.toLowerCase().indexOf("logout") != -1
  360.                     || href.toLowerCase().indexOf("signin") != -1 || href.toLowerCase().indexOf("login") != -1
  361.                     || href.toLowerCase().indexOf("signout") != -1)
  362.             {
  363.                 continue;
  364.             }
  365.             if (this.customSite == "google_search")
  366.             {
  367.                 if (href.indexOf("/webhp") != -1)
  368.                     continue;
  369.             }
  370.             if (this.customSite == "technorati")
  371.             {
  372.                 if (href.indexOf("www.technorati.com/search") != -1 || href.indexOf("www.technorati.com/faves") != -1)
  373.                     continue;
  374.             }
  375.             if (this.customSite == "delicious")
  376.             {
  377.                 if (href.indexOf("delete=") != -1)
  378.                     continue;
  379.             }
  380.  
  381.             var strLink = "" + linkTags[i].href;
  382.             if (strLink.match(/\.(pdf)$/i))
  383.             {
  384.                 if (!this.hasAcrobat) // do not have acrobat
  385.                     continue;
  386.             }
  387.             if (linkTags[i].getAttribute("cpvw_set") == "yes")
  388.                 continue;
  389.             linkTags[i].setAttribute("cpvw_linkIndex", this.arrLinks.length);
  390.  
  391.             linkTags[i].addEventListener("mouseover", function(evt)
  392.             {
  393.                 if (!this.hasAttribute("cpvw_set"))
  394.                     return;
  395.                 var linkObj = this;
  396.                 cpvw_docHandler.curIndex = parseInt(this.getAttribute("linkIndex"));
  397.                 cpvw_docHandler.evt = evt;
  398.                 objPreview.previewOpen(evt, this.href, this);
  399.                     // objPreview.initPreviewShow(evt, this.href, this);
  400.                 }, false);
  401.             linkTags[i].addEventListener("mouseout", function(evt)
  402.                     {
  403.                         var linkObj = this;
  404.  
  405.                         objPreview.previewClose(evt);
  406.                     }, false);
  407.             linkTags[i].addEventListener("click", function(evt)
  408.                     {
  409.                         // alert("A");
  410.                         var href1 = this.href.toString();
  411.                         // if (href1.indexOf("#") == -1 && cpvw_docHandler.customSite !=
  412.                         // "google_video")
  413.                         // href1 = href1 + "#cooliris";
  414.                         // conDump(cpvw_docHandler.isShowingPreview + ", " +
  415.                         // cpvw_docHandler.linkUrl + ", " + href1);
  416.                         if (cpvw_previewHandler.previewOpenMode == "click" && (!cpvw_docHandler.isShowingPreview || cpvw_docHandler.linkUrl != href1))
  417.                         {
  418.                             cpvw_docHandler.openDelayTime = 0;
  419.                             cpvw_docHandler.dispDelayTime = 500;
  420.                             cpvw_docHandler.initPreviewShow(evt, this.href, this);
  421.                             evt.preventDefault();
  422.                         }
  423.                         else
  424.                         {
  425.                             objPreview.initPreviewHide(evt);
  426.                             cpvw_previewHandler.hidePreview();
  427.                         }
  428.                     }, false);
  429.  
  430.             if (strLink.match(/\.(pdf|doc|xls|ppt)$/i))
  431.                 continue;
  432.  
  433.             this.arrLinks.push(linkTags[i].getAttribute("href"));
  434.  
  435.             if (linkTags[i].id == "")
  436.                 regArray.push(linkTags[i]);
  437.             else
  438.                 adsArray.push(linkTags[i]);
  439.         }
  440.  
  441.         this.prefetchLinks = this.prefetchLinks.concat(regArray, adsArray);
  442.     }
  443. }
  444.